/*
 * @Author: szx
 * @Date: 2023-04-01 13:56:41
 * @LastEditTime: 2023-04-01 15:44:15
 * @Description:
 * @FilePath: \learn\fullstackopen\bloglist-part5\cypress\support\commands.js
 */
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })


Cypress.Commands.add('createUser', ({ name, username, password }) => {
    cy.request('POST', 'http://localhost:3003/api/users', {
        name, username, password
    })
})
Cypress.Commands.add('login', ({ username, password }) => {
    cy.request('POST', 'http://localhost:3003/api/login', {
        username, password
    }).then(({ body }) => {
        localStorage.setItem('loggedBlogUser', JSON.stringify(body))
        cy.visit('http://localhost:3000')
    })
})

Cypress.Commands.add('createBlog', ({ title, author, url }) => {
    cy.request({
        url: 'http://localhost:3003/api/blogs',
        method: 'POST',
        body: {
            title, author, url
        },
        headers: {
            'Authorization': `bearer ${JSON.parse(localStorage.getItem('loggedBlogUser')).token}`
        }
    })
    cy.visit('http://localhost:3000')
})

